package com.leetcode;

import java.util.*;

/**
 * 49. 字母异位词分组
 * 排序 + map
 *
 * @author fy
 * @date 2022/4/8 11:52
 */
public class Solution49 {

    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> res = new ArrayList<>();
        if (strs == null || strs.length == 0) {
            return res;
        }
        if (strs.length == 1) {
            List<String> list = new ArrayList<>();
            list.add(strs[0]);
            res.add(list);
            return res;
        }

        Map<String, List<String>> map = new HashMap<>(strs.length);
        for (String str : strs) {
            char[] strArr = str.toCharArray();
            Arrays.sort(strArr);
            String key = new String(strArr);
//            String key = Arrays.toString(strArr);
//            if (map.containsKey(key)) {
//                map.get(key).add(str);
//            } else {
//                List<String> list = new ArrayList<>();
//                list.add(str);
//                map.put(key, list);
//            }
            // 简化的写法
            List<String> list = map.getOrDefault(key, new ArrayList<>());
            list.add(str);
            map.put(key, list);
        }
        return new ArrayList<>(map.values());
    }

    public static void main(String[] args) {
        String[] strs = new String[]{"eat", "tea", "tan", "ate", "nat", "bat"};
        List<List<String>> res = new Solution49().groupAnagrams(strs);
        System.out.println(res);
    }

}
